# coding: utf-8
import math
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import mode
import scipy.stats as sts
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号

## 生成一个beta分布的样本数据集，并对其进行转换 并四舍五入到小数点后两位
samples = np.around(1-np.random.beta(4.4,2,4000000),2)
samples = 1- samples

#plt.figure(num=1, figsize=(16,12))
# 创建一个新的图形，设置其编号为1，DPI（每英寸点数）为300
plt.figure(num=1, dpi=300)
# plt.title('$\\beta$', size=14)
#plt.xlabel(u'数值', size=14)
# 设置Y轴标签为“频数”，并设置字体大小为8
plt.ylabel(u'频数', size=8)
# matplotlib.pyplot.hist(x, bins=None, range=None, normed=False, weights=None, cumulative=False, bottom=None, 
# histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, 
# stacked=False, hold=None, data=None, **kwargs)
# 使用直方图显示样本数据，设置箱数为99
plt.hist(samples,99)
#plt.text(4.5,900, r'$\mu$ = 0.0, $\sigma$ = 2.0', size=12)

# 计算样本的均值、中位数、众数、偏度和峰度
n_mean=round(np.mean(samples),2)  # 计算均值，并四舍五入到小数点后两位
n_median=np.median(samples)  # 计算中位数
n_mode=mode(samples)  # 计算众数
n_Skewness,n_kurtosis=sts.describe(samples)[4:]  # 计算偏度和峰度

# print samples
print (u'均值:%.2f;中位数：%.2f;众数：%.2f(%.0f次)' %(n_mean,n_median,n_mode.mode,n_mode.count))
print (u'偏度:%.2f;峰度：%.2f' %(n_Skewness,n_kurtosis))
# plt.grid(True)
# 在直方图上添加文本，显示计算得到的统计特征
plt.text(0.6,80000,u'均值:%.2f;中位数：%.2f;众数：%.2f' %(n_mean,n_median,n_mode.mode) , size=8)
plt.text(0.6,75000,u'偏度:%.2f;峰度：%.2f' %(n_Skewness,n_kurtosis), size=8)
# plt.axvline(n_mean)
plt.show()
# 打印出样本的统计描述
print (sts.describe(samples))